package ConnectivityEditor.UndoRedo;
import java.util.ArrayList;
import Command.LDrawPart;
import Connectivity.CollisionBox;
import Connectivity.Connectivity;
import ConnectivityEditor.Window.ConnectivityEditor;
import UndoRedo.IAction;
public class AddNDeleteConnAction implements IAction {
private ArrayList<Connectivity> connList;
private ArrayList<Boolean> flagList;
public AddNDeleteConnAction() {
connList = new ArrayList<Connectivity>();
flagList = new ArrayList<Boolean>();
}
private void add(Connectivity conn, boolean flag) {
connList.add(conn);
flagList.add(flag);
}
public void addConnectivity(Connectivity conn) {
add(conn, true);
}
public void removeConnectivity(Connectivity conn) {
add(conn, false);
}
public void removeConnectivities(ArrayList<Connectivity> connList) {
for (Connectivity conn : connList) {
add(conn, false);
}
}
@Override
public void undoAction() {
LDrawPart part = ConnectivityEditor.getInstance().getWorkingPart();
for (int i = 0; i < connList.size(); i++) {
Connectivity conn = connList.get(i);
if (flagList.get(i)) {
if (conn instanceof CollisionBox)
part.getCollisionBoxList().remove(conn);
else
part.getConnectivityList().remove(conn);
} else {
if (conn instanceof CollisionBox)
part.getCollisionBoxList().add((CollisionBox) conn);
else
part.getConnectivityList().add(conn);
}
}
}
@Override
public void redoAction() {
LDrawPart part = ConnectivityEditor.getInstance().getWorkingPart();
for (int i = 0; i < connList.size(); i++) {
Connectivity conn = connList.get(i);
if (!flagList.get(i)) {
if (conn instanceof CollisionBox)
part.getCollisionBoxList().remove(conn);
else
part.getConnectivityList().remove(conn);
} else {
if (conn instanceof CollisionBox)
part.getCollisionBoxList().add((CollisionBox) conn);
else
part.getConnectivityList().add(conn);
}
}
}
}